widget: Emit initial style-set signal in the same situations as GTK2
authorBenjamin Otte <otte@redhat.com>
Sat, 26 Mar 2011 22:34:45 +0000 (23:34 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 26 Mar 2011 23:48:26 +0000 (00:48 +0100)
This ensures that widgets that aren't ported and rely on the style-set
signal being emitted work as well as before. They should not rely on
style-set being emitted however.

Note that this function is a no-op if the initial style has been set
already and is very cheap if it has not been set yet. It only becomes
relevant if the resulting style actually gets used.

https://bugzilla.gnome.org/show_bug.cgi?id=639584

gtk/gtksizerequest.c
gtk/gtkwidget.c

index adc218713b829e2a429393e9fae76debb1dad068..4b379cc780b78217630d3494b8484d649cd2963d 100644 (file)
@@ -339,6 +339,8 @@ compute_size_for_orientation (GtkWidget         *widget,
     {
       gint adjusted_min, adjusted_natural, adjusted_for_size = for_size;
 
+      gtk_widget_ensure_style (widget);
+
       if (orientation == GTK_SIZE_GROUP_HORIZONTAL)
         {
           if (for_size < 0)
index 4c91548969437df32cdfd3b3c5db89fb97770d3c..7a589587cc977f8acf1bf1435631b03179db5a30 100644 (file)
@@ -9201,6 +9201,8 @@ gtk_widget_render_icon (GtkWidget      *widget,
                         GtkIconSize     size,
                         const gchar    *detail)
 {
+  gtk_widget_ensure_style (widget);
+
   return gtk_widget_render_icon_pixbuf (widget, stock_id, size);
 }
 
@@ -10622,7 +10624,8 @@ gtk_widget_real_destroy (GtkWidget *object)
 
   gtk_grab_remove (widget);
 
-  g_object_unref (priv->style);
+  if (priv->style)
+    g_object_unref (priv->style);
   priv->style = gtk_widget_get_default_style ();
   g_object_ref (priv->style);
 }